<!DOCTYPE html>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>

<iframe
  id="testIframe"
  sandbox="allow-scripts allow-same-origin"
  style="display:none"
  src="resources/iframe-listen-orientation-change.html"
>
</iframe>

<script>
  promise_test(async t => {
    t.add_cleanup(async () => {
      try {
      await document.exitFullscreen();
      } catch (e) {}
      screen.orientation.unlock();
    });
    await test_driver.bless("request fullscreen", () => {
      return document.documentElement.requestFullscreen();
    });
    let orientations = [
      "portrait-primary",
      "portrait-secondary",
      "landscape-primary",
      "landscape-secondary",
    ];
    if (screen.orientation.type.includes("portrait")) {
      orientations = orientations.reverse();
    }
    const messageWatcher = new EventWatcher(t, window, "message");

    for (const orientation of orientations) {
      await screen.orientation.lock(orientation);
      const message = await messageWatcher.wait_for("message");
      assert_equals(
        message.data,
        orientation,
        "subframe receives orientation change event"
      );
    }
  }, "Test subframes receive orientation change events");
</script>
